The present invention generally relates to serial buses, and more particularly relates to improving performance on a bus which is asynchronous-traffic intensive.
Known bus interconnections commonly perform a mix of isochronous and asynchronous transactions, each having different requirements, across a serial bus by sharing an overall bus bandwidth. On the one hand, conventional isochronous applications mandate that data be delivered at regular intervals and generally at a constant rate across the bus and do not require confirmation of data delivery. For example, data being transferred from a music compact disc (CD) to a digital tuner is a candidate for transfers via isochronous transactions. On the other hand, conventional asynchronous applications do not require that data be sent at regular intervals, but do mandate a confirmation of receipt of data, for example when performing Control and Status Register read and write transactions.
Overall bus bandwidth is divided into a number of cycles per second, each cycle having a set nominal cycle time. Each cycle is divided into an isochronous data time (window) and an asynchronous data time (window). A purpose of the isochronous window is to give devices whose data is time critical a guarantee of bus bandwidth and bounded latency. Latency is the time a node must wait before sending data. Nodes wishing to perform isochronous transfers allocate a portion of the total isochronous bandwidth from a node that performs the role of an isochronous resource manager or bus manager.
The IEEE 1394-1995 Standard for a High Performance Serial Bus, for example, specifies a 125 xcexcS nominal bus cycle, of which 100 xcexcS is always available for nodes to allocate and use when sending isochronous traffic. Reservation of bandwidth by isochronous devices provides guaranteed bandwidth and bounded latency to devices which send such traffic. The allocation strategy leaves only a 25 xcexcS window per nominal bus cycle for asynchronous traffic. This division of bus bandwidth gives priority to isochronous devices. Such priority is errant in numerous situations, especially in the computer arena.
Problems occur since the priority given to isochronous traffic can cause high latency periods for devices on the bus which only send data asynchronously. Additionally, since a lengthy asynchronous packet may extend beyond the end of the nominal 125 xcexcS cycle period, known architectures allow isochronous transactions to catch up in subsequent cycles. Catch up effectively stops asynchronous traffic for a small number of cycles to allow delayed cycle start packets to re-synchronize with the regular cycle period. Asynchronous traffic is stopped because a root node arbitrates with a higher priority in order to send overdue cycle start packets.
For example, if all 100 xcexcS of isochronous bandwidth are allocated and the asynchronous packet extends beyond its 25 xcexcS window by 40 xcexcS, the next two cycles are almost entirely occupied by isochronous transactions, leaving less than 10 xcexcS available bandwidth for asynchronous transactions. An example of when an asynchronous packet would extend 40 xcexcS beyond the normal 25 xcexcS asynchronous window is when an asynchronous device begins transmitting an asynchronous packet 3 xcexcS before the cycle start packet would normally be sent, and the packet transmission takes 43 xcexcS.
Thus, a need exists for a method that improves bus performance by preventing isochronous capable devices from utilizing a full 100 xcexcS per nominal cycle for isochronous traffic, and allows more asynchronous traffic per bus cycle when asynchronous traffic is heavy. Improving bus performance also decreases the number of bus cycles in which the asynchronous window closes to zero time due to a period of isochronous traffic catch up. By reducing the need for catch up periods, isochronous traffic is less choppy, i.e., more reliable, and asynchronous traffic has less latency.
Accordingly, in response to the problems discussed above, a primary object of the present invention is to provide an improved method that prevents isochronous capable devices from allocating additional bandwidth when asynchronous traffic is sufficiently high.
Another object of the present invention is to provide an improved method that prevents isochronous capable devices from allocating additional bandwidth when an asynchronous device has a large amount of data to transmit on the bus.
Yet another object of the present invention is to provide such an improved method which reduces the need for isochronous traffic catch up periods.